Modelos no lineales
Soy PhD en Estadística, más de 15 años de experiencia en el sector académico, actual director de analítica en CNC, miembro del comité de expertos en pobreza en el DANE y consultor experto de la División de Estadística de la CEPAL. Ex-decano de la Facultad de Estadística USTA, ex-director de operaciones en el ICFES, más de 40 evaluaciones de impacto o de resultados…
Puedes encontrarme en:
Primero explore los datos para identificar el tipo de relación: lineal o no lineal.
Correlación de Pearson, gráficos de dispersión simples o matricial.
Una Correlación de CERO no debe interpretarse como “No existe asociación”, solo permite concluir que no hay asociación lineal pero puede existir una relación de otro tipo. Por ejemplo, Salario Vs. Experiencia. Otro aspecto a considerar es la presencia de datos atípicos (“raros”) que puedan ser influyentes.
Algunos modelos son:
Lineales: lm().
Generalizados: glm().
Bayesianos: stan_glm()
Penalizados: glmnet()
ML: tidymodels
Sea \(\mathcal{D}=\{(y_i, \mathbf{x}_i): i=1,\ldots,n\}\), con \(y_i\) la \(i\)-ésima respuesta medida en una escala continua; \(\mathbf{x}_i=(x_{i1},\ldots,x_{ip})^t \in \mathbb{R}^p\) es el vector de variables predictoras; y \(n\) \((\gg p)\) es el tamaño de la muestra. El modelo lineal se especifica así:
\[y_i = \beta_0 + \beta_1 x_{i1} + \cdots + \beta_p x_{ip} + \varepsilon_i \hspace{0.25cm} \text{con } \varepsilon_i \overset{\text{iid}}{\sim} \mathcal{N}(\mu, \sigma^2)\]
tidyverseEl instrumento del DASS 21 permite construir una escala de Depresión, Ansiedad y Estrés (DASS-21). Investigue más sobre su construcción y propiedades psicométricas. Una versión del instrumento puede ser consultada aquí
Explore el conjunto del datos DASS21.sav el cual contiene los resultados para una muestra de 800 personas de Colombia realizada en el año 2022.
Puede usar lapply(dass, function(x) attributes(x)$label) para ver las etiquetas de las preguntas.
Realice un diagrama de dispersión y calcule la correlación entre las variables cuantitativas de nivel de depresión, estrés y ansiedad.
¿Considera que el grado de asociación se diferencia entre hombres y mujeres?, haga los gráficos de dispersión segmentados por sexo
Realice los análisis que le permitan concluir sobre la asociación entre la depresión y la satisfacción con la vivienda, trabajo, amigos, vecinos y el barrio.
Ajuste el modelo de regresión usando las variables del numeral anterior y agregue la variable del sexo.
Requiere de al menos 3 elementos: datos, variables (aes), geometría.
Puede ver la correlación en forma de matriz usando pairs.panels() del paquete psych
Realice los análisis que le permitan concluir sobre la asociación entre la depresión y la satisfacción con la vivienda, trabajo, amigos, vecinos y el barrio.
vars <- dass |> select(DEPRESION, P1_1, P1_2, P1_3, P1_4, P1_5)
round(cor(vars, use = "complete"), 3) DEPRESION P1_1 P1_2 P1_3 P1_4 P1_5
DEPRESION 1.000 -0.107 -0.161 -0.100 -0.096 -0.097
P1_1 -0.107 1.000 0.430 0.413 0.357 0.429
P1_2 -0.161 0.430 1.000 0.601 0.480 0.556
P1_3 -0.100 0.413 0.601 1.000 0.592 0.590
P1_4 -0.096 0.357 0.480 0.592 1.000 0.622
P1_5 -0.097 0.429 0.556 0.590 0.622 1.000
Ajuste del modelo de regresión adicionando la variable del sexo.
Revise la escala de las variables que se usarán en el modelo.
Convierta la variable sexo en factor así: dass$sexo <- as_factor(dass$sexo)
Ajuste el modelo de regresión y presente los resultados.
Interprete los coeficientes y el valor p.
Analice la validez de los resultados.
Use las funciones glimpse(vars) y skim(vars) para inspeccionar el conjunto de los datos.
El modelo es de tipo lineal, así que se usa la función lm()
Characteristic |
Beta |
95% CI |
p-value |
|---|---|---|---|
| (Intercept) | 4.0 | 3.0, 4.9 | <0.001 |
| Satisfacción con La vivienda | -0.09 | -0.24, 0.06 | 0.3 |
| Satisfacción con Su trabajo | -0.36 | -0.59, -0.13 | 0.002 |
| Satisfacción con Sus amigos | 0.03 | -0.22, 0.28 | 0.8 |
| Satisfacción con Sus vecinos | -0.06 | -0.31, 0.18 | 0.6 |
| Satisfacción con Su barrio | 0.02 | -0.23, 0.28 | 0.9 |
| B. Sexo: | |||
| Hombre | — | — | |
| Mujer | 0.06 | -0.34, 0.47 | 0.8 |
| R² | 0.028 | ||
| p-value | <0.001 | ||
| 1 CI = Confidence Interval |
|||
Que no se cumplan los supuestos puede afectar varios aspectos: sesgos, problemas de pronóstico, error de contraste.
Se usan cuando la variable dependiente es de tipo discreto, nominal o multinomial.
Variable dependiente binaria
Aprobar/no aprobar el examen / gestión del pte.
Ser o no víctima de violencia doméstica.
Tener o no tener una enfermedad.
Estar o no en estado de pobreza.
En este caso:
\(y_i \in \{0, 1\}\), en donde 1 representa aprobar y 0 no aprobar.
Se usan cuando la variable dependiente es de tipo discreto, nominal o multinomial.
Variable dependiente nominal
Estado de ocupación: empleo formal, empleo informal, desempleo, inactivo, etc.
Clasificación étnica: Sin étnia, Afrocolombiano, Indígena, Raizal, Palenquero.
Tipo de cliente: Élite, Plata, Bronce, Masivo.
En este caso:
\(y_i \in \{A, B, C, D, ...\}\), en donde cada letra representa una categoría nominal que es excluyente de las demás.
Se usan cuando la variable dependiente es de tipo discreto, nominal o multinomial.
Variable dependiente ordinal
La clasificación del nivel de estrés en la escala: Sin estrés, con estrés leve, estrés moderado, estrés severo y estrés extremadamente severo.
Clasifiación de pobreza: Con pobreza extrema, en estado de pobreza, no pobre.
En este caso:
\(y_i \in \{1, 2, 3, ...\}\), en cada valor está en una escala ordinal.
Necesitamos una regla para clasificar a cada observación.
La imagen presenta una regla dadas dos variables independientes.
La función de clasificación puede ser lineal o no lineal.
Imagen de “Elements of Statistical Learning” de Hastie and Tibshirani
Suponga que puede clasificar a todas las observaciones en 2 grupos/clases (1: Éxito, 0: Fracaso). La función logística, permite calcular la probabilidad de cada suceso.
\[\pi(x) = P(Y = 1 | \mathbf{X}=\mathbf{x}) = \frac{\exp\{\beta_0+\beta_1x_1+\cdots+\beta_kx_k\}}{1+\exp\{\beta_0+\beta_1x_1+\cdots+\beta_kx_k\}} \]
\(1-\pi(x)=P(Y = 0 | \mathbf{X}=\mathbf{x})\)
¿Por qué no se debería aplicar regresión lineal en este caso?
\[Odds = \frac{\pi(x)}{1-\pi(x)}\]
Suponga que en el evento de desertar del colegio, se encontró que la probabilidad de deserción cuando el niño tiene una madre sin estudios es \(\pi(x)=0.71\). Así que
\[Odds_{A} = \frac{0.71}{1-0.71} = 2.45\]
Por cada niño que no deserta, hay casi 3 que si lo hacen cuando la madre no tienen ningún nivel de estudios.
\[OR = \frac{Odss_A}{Odds_B}\]
Si la probabilidad de deserción cuando la madre tiene un nivel educativo de bachillerato es \(\pi(x) = 0.18\). Calcule el OR entre el grupo con madre sin estudios y el grupo con madre con nivel de bachiller.
\[OR = \frac{Odds_{\text{Madre sin estudios}}}{Odds_{\text{Madre bachiller}}} = \frac{\frac{0.71}{1-0.71}}{\frac{0.18}{1-0.18}}=\frac{2.45}{0.22}=11.2\]
Es 11 veces más probable que un niño cuya madre no tiene estudios abandone sus estudios en comparación con los niños cuyas madres tienen un nivel de bachillerato.
Cuando la probabilidad se calcula con una f.d.p. logística, se puede mostrar que:
\[\frac{\pi(x)}{1-\pi(x)}=e^{\beta_0+\beta_1x_1+\beta_2x_2+\cdots+\beta_kx_k}\]
De esta forma el log-odds, conocido como el logit, conlleva a una relación lineal fácil de manejar y de interpretar:
\[\ln\left(\frac{\pi(x)}{1-\pi(x)}\right) = \beta_0+\beta_1x_1+\beta_2x_2+\cdots+\beta_kx_k\]
La estimación de los parámetros debe hacerse por métodos iterativos debido a que la función de pérdida no es convexa.
Permite identificar la asociación entre dos variables cualitativas.
\[H_0:\text{Las variables son independientes}\] \[H_1:\text{Las variables están relacionadas.}\]
Si A y B son eventos independientes entonces se cumple que:
\[\mathbb{P}(A \cap B) = \mathbb{P}(A) * \mathbb{P}(B)\]
Si el valor \(p\) es inferior a un nivel \(\alpha\) se dice que hay suficiente evidencia estadística para rechazar \(H_0\).
Sensibilidad: Porcentaje de verdaderos positivos.
Especificidad: Porcentaje de verdaderos negativos.
Evalúa la capacidad predictiva del modelo. Se eligen varios puntos de corte y se representa gráficamente la capacidad del modelo para realizar una correcta clasificación
De acuerdo con la escala DASS, una persona con un puntaje de 8 o más puede ser considerada con problemas de depresesión, ansiedad o estrés.
Ajuste un modelo que le permita identificar los factores de riesgo y los factores de protección contra la ansiedad, para ello utilice las variables del sexo, satisfacción y participación que se encuentran dentro del instrumento aplicado.
Explore el conjunto de datos e identifique las diferencias frente a los datos iniciales.
grafica <- function(variable) {
label_y <- attr(prepara[[deparse(substitute(variable))]], "label")
ggplot(prepara, aes(x = as.factor(ansi), y = {{variable}}, fill = as.factor(ansi))) +
geom_boxplot() +
labs(x = "Ansiedad (0 = No, 1 = Sí)", y = label_y) +
ylim(1, 8) +
theme_minimal() +
theme(legend.position = "none")
}
p1 <- grafica(P1_1); p2 <- grafica(P1_2); p3 <- grafica(P1_3);
p4 <- grafica(P1_4); p5 <- grafica(P1_5); p6 <- grafica(P1_6);
(p1 | p2 | p3)/(p4 | p5 | p6)Esta prueba contrasta la hipótesis nula de independencia frente a la alternativa de asociación.
Pearson's Chi-squared test with Yates' continuity correction
data: prepara$ansi and prepara$sexo
X-squared = 0.31065, df = 1, p-value = 0.5773
[1] "Ha participado en Prácticas restaurativas para superar situaciones difíciles"
Pearson's Chi-squared test with Yates' continuity correction
data: prepara$ansi and prepara$P2_7
X-squared = 7.854, df = 1, p-value = 0.005071
La función glm() permite ajustar un modelo lineal generalizado. Se usa binomial para modelos de regresión logística binaria donde la función de enlace es de tipo logit, cuando la variable dependiente son recuentos se usa poisson y si la variable dependiente es positiva continua entonces se puede usar gamma.
Call:
glm(formula = ansi ~ sexo + P1_1 + P1_2 + P1_3 + P1_4 + P1_5 +
P1_6 + P2_1 + P2_2 + P2_3 + P2_4 + P2_5 + P2_6 + P2_7 + P2_8,
family = binomial, data = prepara)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.17846 0.72108 -1.634 0.102196
sexoMujer 0.31186 0.37322 0.836 0.403382
P1_1 -0.26461 0.14629 -1.809 0.070480 .
P1_2 -0.27997 0.19843 -1.411 0.158253
P1_3 -0.12968 0.20598 -0.630 0.528993
P1_4 -0.37452 0.23396 -1.601 0.109425
P1_5 -0.02688 0.22994 -0.117 0.906931
P1_6 0.55290 0.22809 2.424 0.015350 *
P2_1SÍ -0.08366 0.48328 -0.173 0.862560
P2_2SÍ -0.30776 0.48578 -0.634 0.526382
P2_3SÍ -0.12333 0.39549 -0.312 0.755159
P2_4SÍ 0.29145 0.41912 0.695 0.486812
P2_5SÍ -0.31864 0.39590 -0.805 0.420915
P2_6SÍ -0.02669 0.38881 -0.069 0.945266
P2_7SÍ 1.72298 0.46399 3.713 0.000205 ***
P2_8SÍ -0.93297 0.45011 -2.073 0.038193 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 340.77 on 799 degrees of freedom
Residual deviance: 305.74 on 784 degrees of freedom
AIC: 337.74
Number of Fisher Scoring iterations: 6
Note que hay múltiples variables que no son significativas en el modelo.
Para llevar a cabo un proceso de eliminación automática de variables que no son relevantes se puede usar
Start: AIC=337.74
ansi ~ sexo + P1_1 + P1_2 + P1_3 + P1_4 + P1_5 + P1_6 + P2_1 +
P2_2 + P2_3 + P2_4 + P2_5 + P2_6 + P2_7 + P2_8
Df Deviance AIC
- P2_6 1 305.75 335.75
- P1_5 1 305.76 335.76
- P2_1 1 305.77 335.77
- P2_3 1 305.84 335.84
- P2_2 1 306.14 336.14
- P1_3 1 306.14 336.14
- P2_4 1 306.22 336.22
- P2_5 1 306.40 336.40
- sexo 1 306.47 336.47
- P1_2 1 307.65 337.65
<none> 305.74 337.74
- P1_4 1 308.39 338.39
- P1_1 1 309.30 339.30
- P2_8 1 310.17 340.17
- P1_6 1 311.93 341.93
- P2_7 1 319.89 349.89
Step: AIC=335.75
ansi ~ sexo + P1_1 + P1_2 + P1_3 + P1_4 + P1_5 + P1_6 + P2_1 +
P2_2 + P2_3 + P2_4 + P2_5 + P2_7 + P2_8
Df Deviance AIC
- P1_5 1 305.76 333.76
- P2_1 1 305.78 333.78
- P2_3 1 305.85 333.85
- P2_2 1 306.15 334.15
- P1_3 1 306.15 334.15
- P2_4 1 306.22 334.22
- P2_5 1 306.46 334.46
- sexo 1 306.48 334.48
- P1_2 1 307.65 335.65
<none> 305.75 335.75
- P1_4 1 308.41 336.41
- P1_1 1 309.31 337.31
- P2_8 1 310.23 338.23
- P1_6 1 311.97 339.97
- P2_7 1 320.00 348.00
Step: AIC=333.76
ansi ~ sexo + P1_1 + P1_2 + P1_3 + P1_4 + P1_6 + P2_1 + P2_2 +
P2_3 + P2_4 + P2_5 + P2_7 + P2_8
Df Deviance AIC
- P2_1 1 305.79 331.79
- P2_3 1 305.86 331.86
- P2_2 1 306.16 332.16
- P1_3 1 306.18 332.18
- P2_4 1 306.23 332.23
- P2_5 1 306.47 332.47
- sexo 1 306.48 332.48
- P1_2 1 307.66 333.66
<none> 305.76 333.76
- P1_4 1 309.14 335.14
- P1_1 1 309.38 335.38
- P2_8 1 310.23 336.23
- P1_6 1 312.48 338.48
- P2_7 1 320.00 346.00
Step: AIC=331.79
ansi ~ sexo + P1_1 + P1_2 + P1_3 + P1_4 + P1_6 + P2_2 + P2_3 +
P2_4 + P2_5 + P2_7 + P2_8
Df Deviance AIC
- P2_3 1 305.92 329.92
- P1_3 1 306.20 330.20
- P2_4 1 306.25 330.25
- P2_2 1 306.49 330.49
- P2_5 1 306.50 330.50
- sexo 1 306.51 330.51
- P1_2 1 307.73 331.73
<none> 305.79 331.79
- P1_4 1 309.15 333.15
- P1_1 1 309.38 333.38
- P2_8 1 310.26 334.26
- P1_6 1 312.49 336.49
- P2_7 1 320.08 344.08
Step: AIC=329.92
ansi ~ sexo + P1_1 + P1_2 + P1_3 + P1_4 + P1_6 + P2_2 + P2_4 +
P2_5 + P2_7 + P2_8
Df Deviance AIC
- P2_4 1 306.30 328.30
- P1_3 1 306.35 328.35
- sexo 1 306.58 328.58
- P2_2 1 306.68 328.68
- P2_5 1 306.68 328.68
- P1_2 1 307.81 329.81
<none> 305.92 329.92
- P1_4 1 309.29 331.29
- P1_1 1 309.50 331.50
- P2_8 1 310.56 332.56
- P1_6 1 312.58 334.58
- P2_7 1 320.10 342.10
Step: AIC=328.3
ansi ~ sexo + P1_1 + P1_2 + P1_3 + P1_4 + P1_6 + P2_2 + P2_5 +
P2_7 + P2_8
Df Deviance AIC
- P1_3 1 306.80 326.80
- P2_5 1 306.88 326.88
- P2_2 1 306.94 326.94
- sexo 1 306.95 326.95
- P1_2 1 308.16 328.16
<none> 306.30 328.30
- P1_4 1 309.68 329.68
- P1_1 1 309.85 329.85
- P2_8 1 310.66 330.66
- P1_6 1 312.96 332.96
- P2_7 1 322.37 342.37
Step: AIC=326.8
ansi ~ sexo + P1_1 + P1_2 + P1_4 + P1_6 + P2_2 + P2_5 + P2_7 +
P2_8
Df Deviance AIC
- P2_5 1 307.30 325.30
- sexo 1 307.45 325.45
- P2_2 1 307.47 325.47
<none> 306.80 326.80
- P1_2 1 308.97 326.97
- P1_1 1 310.54 328.54
- P2_8 1 310.91 328.91
- P1_4 1 311.59 329.59
- P1_6 1 313.08 331.08
- P2_7 1 322.51 340.51
Step: AIC=325.3
ansi ~ sexo + P1_1 + P1_2 + P1_4 + P1_6 + P2_2 + P2_7 + P2_8
Df Deviance AIC
- sexo 1 308.10 324.10
- P2_2 1 308.13 324.13
<none> 307.30 325.30
- P1_2 1 309.51 325.51
- P1_1 1 310.90 326.90
- P1_4 1 311.98 327.98
- P2_8 1 312.12 328.12
- P1_6 1 313.70 329.70
- P2_7 1 322.52 338.52
Step: AIC=324.1
ansi ~ P1_1 + P1_2 + P1_4 + P1_6 + P2_2 + P2_7 + P2_8
Df Deviance AIC
- P2_2 1 308.86 322.86
<none> 308.10 324.10
- P1_2 1 310.31 324.31
- P1_1 1 311.80 325.80
- P1_4 1 312.67 326.67
- P2_8 1 312.88 326.88
- P1_6 1 314.59 328.59
- P2_7 1 323.27 337.27
Step: AIC=322.86
ansi ~ P1_1 + P1_2 + P1_4 + P1_6 + P2_7 + P2_8
Df Deviance AIC
<none> 308.86 322.86
- P1_2 1 311.21 323.21
- P1_1 1 312.42 324.42
- P1_4 1 313.61 325.61
- P2_8 1 314.43 326.43
- P1_6 1 315.44 327.44
- P2_7 1 323.36 335.36
Call: glm(formula = ansi ~ P1_1 + P1_2 + P1_4 + P1_6 + P2_7 + P2_8,
family = binomial, data = prepara)
Coefficients:
(Intercept) P1_1 P1_2 P1_4 P1_6 P2_7SÍ
-1.3812 -0.2577 -0.3010 -0.4337 0.4938 1.5991
P2_8SÍ
-0.9809
Degrees of Freedom: 799 Total (i.e. Null); 793 Residual
Null Deviance: 340.8
Residual Deviance: 308.9 AIC: 322.9
Characteristic |
OR |
95% CI |
p-value |
|---|---|---|---|
| Satisfacción con La vivienda | 0.77 | 0.58, 1.01 | 0.070 |
| Satisfacción con Su trabajo | 0.74 | 0.51, 1.09 | 0.12 |
| Satisfacción con Sus vecinos | 0.65 | 0.44, 0.96 | 0.031 |
| Satisfacción con Su familia | 1.64 | 1.12, 2.42 | 0.011 |
| Ha participado en Prácticas restaurativas para superar situaciones difíciles | |||
| NO | — | — | |
| SÍ | 4.95 | 2.17, 11.4 | <0.001 |
| Ha participado en Entrenamiento para fortalecer habilidades socio-emocionales | |||
| NO | — | — | |
| SÍ | 0.37 | 0.16, 0.85 | 0.021 |
| 1 OR = Odds Ratio, CI = Confidence Interval |
|||
\[\ln\left(\frac{\pi}{1-\pi}\right)=-1.38-0.26 S.Viv - 0.30 S.Trab - 0.43 S.Vec \\ \hspace{5cm} + 0.49 S.Flia + 1.6 P.Resta - 0.98 Hab.Soc\] ¿Cómo calcularía la probabilidad de que una persona con las siguientes características sufra de ansidad? Sat.Viv = 2, Sat.Trab = 1, Sat.Vec = 2, Sat.Flia = 3, Parti.Pract.Restau = Si, Entrenamiento SocEmo = No. ¿Qué se esperaría si la persona cambia a un trabajo que en verdad le haga muy feliz (5)?
Estamos en un mundo de constante evolución, ¿la IA nos va a reemplazar?
@tiangolo
El GPT (Generative Pre-trained Transformer) es un modelo de LLM (Large Language Model). Mientras que GPT-3 usaba 175 MM de parámetros usando modelos soportados en texto, GPT-4 usa 100 BN de parámetros usando modelos soportados en texto e imágenes.
No pretenda que todo ocurra en un solo paso, a veces se obtienen mejores resultados precisando un prompt en cada paso.
@mdancho84
Use un asistente de IA para realizar algunos análisis sobre el conjunto de datos DASS:
Haga un prompt que solicite crear un gráfico de correlación entre las variables que empiezan con el prefijo “P1_”, pida que use el paquete corrplot de R, solicite que se vea elegante y se presente los valores de las correlaciones.
Solicite asistencia para generar la gráfica de dispersión del punto 1 del taller.
Haga el Debug de los códigos anteriores, es decir, encontrar errores que pueden impedir que los códigos funcionen.
Çetinkaya-Rundel, M. and Hardin, J. (2021) Introduction to modern statistics. Sections of Regression modeling: 7, 8, 9 y 10. Disponible aquí: https://openintro-ims.netlify.app/
Hastie, T., Tibshirani, R., Friedman, J. H., & Friedman, J. H. (2009). The elements of statistical learning: data mining, inference, and prediction (Vol. 2, pp. 1-758). New York: springer.
Ismay, C., & Kim, A.Y. (2019). Statistical Inference via Data Science: A ModernDive into R and the Tidyverse (1st ed.). Chapman and Hall/CRC. https://doi.org/10.1201/9780367409913
Thompson, J. (2019). Tidy Data Science with the tidyverse and tidymodels. https://tidyds-2021.wjakethompson.com
Diapositivas disponibles en GitHub.